package pers.wensheng.patterns.creator_pattern.factory_pattern.zother;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * JDK源码解析 Collection.iterator 方法
 * 单列集合获取迭代器的方法就使用到了工厂方法模式
 *
 * 四个角色：抽象工厂，具体工厂，抽象产品，具体产品
 * Collection接口是抽象工厂类，ArrayList是具体的工厂类；
 * Iterator接口是抽象商品类，ArrayList类中的Iter内部类是具体的商品类
 *
 * 在具体的工厂类中创建了具体的产品类对象，这种模式就是属于工厂方法模式
 *
 * 另：
 *
 * 1,DateForamt类中的getInstance()方法使用的是工厂模式；
 *
 * 2,Calendar类中的getInstance()方法使用的是工厂模式；
 */
public class Demo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("令狐冲");
        list.add("风清扬");
        list.add("任我行");

        //获取的是该接口的子实现类对象，现在看看获取的到底是哪个类的对象呢
        Iterator<String> iterator = list.iterator();

    }
}
